#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

//long long gcd(long long a, long long b)
//{
//    while (b > 0)
//    {
//        long long c = a % b;
//        a = b;
//        b = c;
//    }
//    return a;
//}
//
//long long lcm(long long a, long long b)
//{
//    return a * b / gcd(a, b);
//}
//
//int main() {
//    long long a, b;
//    cin >> a >> b;
//    cout << lcm(a, b);
//}

//class Solution {
//public:
//    int MLS(vector<int>& arr) {
//        sort(arr.begin(), arr.end());
//        int i = 0, ret = 0;
//        while (i < arr.size()-1)
//        {
//            int tmp = 0;
//            while ((arr[i + 1] == arr[i] + 1 || arr[i + 1] == arr[i])
//                && i < arr.size() - 1)
//            {
//                if(arr[i + 1] == arr[i] + 1)
//                    tmp++;
//                i++;
//            }
//            ret = max(ret, tmp);
//
//            i++;
//        }
//        return ret + 1;
//    }
//};

//int m, n, ret = 0;
//char board[500][500] = { 0 };
//int vis[500][500] = { 0 };
//int dirx[] = { 1,0 };
//int diry[] = { 0,1 };
//
//void dfs(int x, int y,int src)
//{
//	switch (board[x][y])
//	{
//	case 'l':
//		src += 4;
//		break;
//	case 'o':
//		src += 3;
//		break;
//	case'v':
//		src += 2;
//		break;
//	case'e':
//		src += 1;
//		break;
//	}
//
//	if (x == m - 1 && y == n - 1)
//	{
//		ret = max(ret, src);
//	}
//
//	for (int i = 0; i < 2; i++)
//	{
//		int nx = x + dirx[i], ny = y + diry[i];
//		if (nx < m && ny < n && vis[nx][ny] == 0)
//		{
//			vis[nx][ny] = 1;
//			dfs(nx, ny, src);
//			vis[nx][ny] = 0;
//		}
//	}
//}
//
//int main()
//{
//	cin >> m >> n;	
//	for (int i = 0; i < m; i++)
//	{
//		for (int j = 0; j < n; j++)
//		{
//			cin >> board[i][j];
//		}
//	}
//	dfs(0, 0, 0);
//	cout << ret;
//}

